<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="../aosa.css" type="text/css">
    <title>The Architecture of Open Source Applications</title>
  </head>
  <body>

    <div class="titlebox">
      <h1>The Architecture of Open Source Applications</h1>
    </div>

    <p>
      Architects look at thousands of buildings during their
      training, and study critiques of those buildings written
      by masters.  In contrast, most software developers only
      ever get to know a handful of large programs
      well&mdash;usually programs they wrote
      themselves&mdash;and never study the great programs of
      history.  As a result, they repeat one another's mistakes
      rather than building on one another's successes.
    </p>
          
    <p>
      Our goal is to change that.  In these two books, the authors of
      four dozen open source applications explain how their software
      is structured, and why.  What are each program's major
      components?  How do they interact?  And what did their builders
      learn during their development?  In answering these questions,
      the contributors to these books provide unique insights into how
      they think.
    </p>
          
    <p>
      If you are a junior developer, and want to learn how your
      more experienced colleagues think, these books are the place
      to start.  If you are an intermediate or senior developer,
      and want to see how your peers have solved hard design
      problems, these books can help you too.
    </p>

    <div class="row">
      <div class="col-12 center">
	<h2 id="500lines">500 Lines or Less</h2>
      </div>
    </div>
    <div class="row"> 
      <div class="col-4 center">
        <img class="cover" src="../images/500l-cover.png" alt="500Lines Cover"/>
        <p><a href="buy.html#500L">Buy 500 Lines</a></p>
      </div>
      <div class="col-8">
        <table>
          <tr>
            <td></td>
            <td><a href="500L/introduction.html">Introduction</a></td>
            <td>Michael DiBernardo</td>
          </tr>
          <tr>
            <td>1</td>
            <td><a href='500L/blockcode-a-visual-programming-toolkit.html' title='Blockcode: A visual programming toolkit'>Blockcode: A visual programming toolkit</a></td>
            <td>Dethe Elza</td>
          </tr>
          <tr>
            <td>2</td>
            <td><a href='500L/a-continuous-integration-system.html' title='A Continuous Integration System'>A Continuous Integration System</a></td>
            <td>Malini Das</td>
          </tr>
          <tr>
            <td>3</td>
            <td><a href='500L/clustering-by-consensus.html' title='Clustering by Consensus'>Clustering by Consensus</a></td>
            <td>Dustin J. Mitchell</td>
          </tr>
          <tr>
            <td>4</td>
            <td><a href='500L/contingent-a-fully-dynamic-build-system.html' title='Contingent: A Fully Dynamic Build System'>Contingent: A Fully Dynamic Build System</a></td>
            <td>Brandon Rhodes and Daniel Rocco</td>
          </tr>
          <tr>
            <td>5</td>
            <td><a href='500L/a-web-crawler-with-asyncio-coroutines.html' title='A Web Crawler With asyncio Coroutines'>A Web Crawler With asyncio Coroutines</a></td>
            <td>A. Jesse Jiryu Davis and Guido van Rossum</td>
          </tr>
          <tr>
            <td>6</td>
            <td><a href='500L/dagoba-an-in-memory-graph-database.html' title='Dagoba: an in-memory graph database'>Dagoba: an in-memory graph database</a></td>
            <td>Dann Toliver</td>
          </tr>
          <tr>
            <td>7</td>
            <td><a href='500L/dbdb-dog-bed-database.html' title='DBDB: Dog Bed Database'>DBDB: Dog Bed Database</a></td>
            <td>Taavi Burns</td>
          </tr>
          <tr>
            <td>8</td>
            <td><a href='500L/an-event-driven-web-framework.html' title='An Event-Driven Web Framework'>An Event-Driven Web Framework</a></td>
            <td>Leo Zovic</td>
          </tr>
          <tr>
            <td>9</td>
            <td><a href='500L/a-flow-shop-scheduler.html' title='A Flow Shop Scheduler'>A Flow Shop Scheduler</a></td>
            <td>Dr. Christian Muise</td>
          </tr>
          <tr>
            <td>10</td>
            <td><a href='500L/an-archaeology-inspired-database.html' title='An Archaeology-Inspired Database'>An Archaeology-Inspired Database</a></td>
            <td>Yoav Rubin</td>
          </tr>
          <tr>
            <td>11</td>
            <td><a href='500L/making-your-own-image-filters.html' title='Making Your Own Image Filters'>Making Your Own Image Filters</a></td>
            <td>Cate Huston</td>
          </tr>
          <tr>
            <td>12</td>
            <td><a href='500L/a-python-interpreter-written-in-python.html' title='A Python Interpreter Written in Python'>A Python Interpreter Written in Python</a></td>
            <td>Allison Kaptur</td>
          </tr>
          <tr>
            <td>13</td>
            <td><a href='500L/a-3d-modeller.html' title='A 3D Modeller'>A 3D Modeller</a></td>
            <td>Erick Dransch</td>
          </tr>
          <tr>
            <td>14</td>
            <td><a href='500L/a-simple-object-model.html' title='A Simple Object Model'>A Simple Object Model</a></td>
            <td>Carl Friedrich Bolz</td>
          </tr>
          <tr>
            <td>15</td>
            <td><a href='500L/optical-character-recognition-ocr.html' title='Optical Character Recognition (OCR)'>Optical Character Recognition (OCR)</a></td>
            <td>Marina Samuel</td>
          </tr>
          <tr>
            <td>16</td>
            <td><a href='500L/a-pedometer-in-the-real-world.html' title='A Pedometer in the Real World'>A Pedometer in the Real World</a></td>
            <td>Dessy Daskalov</td>
          </tr>
          <tr>
            <td>17</td>
            <td><a href='500L/the-same-origin-policy.html' title='The Same-Origin Policy'>The Same-Origin Policy</a></td>
            <td>Eunsuk Kang, Santiago Perez De Rosso, and Daniel Jackson</td>
          </tr>
          <tr>
            <td>18</td>
            <td><a href='500L/a-rejection-sampler.html' title='A Rejection Sampler'>A Rejection Sampler</a></td>
            <td>Jessica B. Hamrick</td>
          </tr>
          <tr>
            <td>19</td>
            <td><a href='500L/web-spreadsheet.html' title='Web Spreadsheet'>Web Spreadsheet</a></td>
            <td>Audrey Tang</td>
          </tr>
          <tr>
            <td>20</td>
            <td><a href='500L/static-analysis.html' title='Static Analysis'>Static Analysis</a></td>
            <td>Leah Hanson</td>
          </tr>
          <tr>
            <td>21</td>
            <td><a href='500L/a-template-engine.html' title='A Template Engine'>A Template Engine</a></td>
            <td>Ned Batchelder</td>
          </tr>
          <tr>
            <td>22</td>
            <td><a href='500L/a-simple-web-server.html' title='A Simple Web Server'>A Simple Web Server</a></td>
            <td>Greg Wilson</td>
          </tr>
        </table>
      </div>
    </div>

    <div class="row">
      <div class="col-12 center">
	<h2 id="posa">The Performance of Open Source Applications</h2>
      </div>
    </div>
    <div class="row">
      <div class="col-4 center">
        <img class="cover" id="posa-cover" src="../images/posa-cover.png" alt="POSA Cover"/>
        <p><a href="buy.html#posa">Buy POSA</a></p>
      </div>
      <div class="col-8">
        <table>
          <tr>
            <td></td>
            <td><a href="posa/introduction.html">Introduction</a></td>
            <td><a href="posa/introduction.html#armstrong-tavish">Tavish Armstrong</a></td>
          </tr>
	  <tr>
	    <td>
	      1
	    </td>
	    <td>
	      <a href="posa/high-performance-networking-in-chrome.html" title="High Performance Networking in Chrome">
		High Performance Networking in Chrome
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#grigorik-ilya"> Ilya Grigorik</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      2
	    </td>
	    <td>
	      <a href="posa/from-socialcalc-to-ethercalc.html" title="From SocialCalc to EtherCalc">
		From SocialCalc to EtherCalc
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#tang-audrey"> Audrey Tang</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      3
	    </td>
	    <td>
	      <a href="posa/ninja.html" title="Ninja">
		Ninja
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#martin-evan"> Evan Martin</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      4
	    </td>
	    <td>
	      <a href="posa/parsing-xml-at-the-speed-of-light.html" title='Parsing XML at the Speed of Light'>
		Parsing
		<span class="caps">
		  XML
		</span>
		at the Speed of Light
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#kapoulkine-arseny"> Arseny Kapoulkine</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      5
	    </td>
	    <td>
	      <a href="posa/memshrink.html" title="MemShrink">
		MemShrink
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#huey-kyle"> Kyle Huey</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      6
	    </td>
	    <td>
	      <a href="posa/applying-optimization-principle-patterns-to-component-deployment-and-configuration-tools.html" title="Applying Optimization Principle Patterns to Component Deployment and Configuration Tools">
		Applying Optimization Principle Patterns to Component Deployment and Configuration Tools
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#schmidt-doug">  Doug C. Schmidt</a>,
	      <a href="posa/introduction.html#otte-william">  William R. Otte</a>,
	      and
	      <a href="posa/introduction.html#gokhale-aniruddha">  Aniruddha Gokhale</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      7
	    </td>
	    <td>
	      <a href="posa/infinispan.html" title="Infinispan">
		Infinispan
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#surtani-manik"> Manik Surtani</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      8
	    </td>
	    <td>
	      <a href="posa/talos.html" title="Talos">
		Talos
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#talbert-clint"> Clint Talbert</a> and    <a href="posa/introduction.html#maher-joel"> Joel Maher</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      9
	    </td>
	    <td>
	      <a href="posa/zotonic.html" title="Zotonic">
		Zotonic
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#scherpenisse-arjan"> Arjan Scherpenisse</a>
	      and
	      <a href="posa/introduction.html#worrel-marc">  Marc Worrell</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      10
	    </td>
	    <td>
	      <a href="posa/secrets-of-mobile-network-performance.html" title="Secrets of Mobile Network Performance">
		Secrets of Mobile Network Performance
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#howard-bryce"> Bryce Howard</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      11
	    </td>
	    <td>
	      <a href="posa/warp.html" title="Warp">
		Warp
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#yamamoto-kazu">  Kazu Yamamoto</a>,
	      <a href="posa/introduction.html#snoyman-michael">  Michael Snoyman</a>,
	      and
	      <a href="posa/introduction.html#voellmy-andreas">  Andreas Voellmy</a>
	    </td>
	  </tr>
	  <tr>
	    <td>
	      12
	    </td>
	    <td>
	      <a href="posa/working-with-big-data-in-bioinformatics.html" title="Working with Big Data in Bioinformatics">
		Working with Big Data in Bioinformatics
	      </a>
	    </td>
	    <td>
	      <a href="posa/introduction.html#mcdonald-eric"> Eric McDonald</a> and 
	      <a href="posa/introduction.html#brown-titus">C. Titus Brown</a>
	    </td>
	  </tr>
        </table>
      </div>
    </div>
    
    <div class="row">
      <div class="col-12 center">
	<h2 id="aosa2">AOSA Volume 2</h2>
      </div>
    </div>
    <div class="row">
      <div class="col-4 center">
        <img class="cover" src="../images/cover2.jpg" alt="Volume 2 cover"/>
        <p><a href="buy.html#vol2">Buy Volume II</a></p>
      </div>
      <div class="col-8">
        <table>
          <tr>
            <td></td>
            <td><a href="intro2.html">Introduction</a></td>
            <td><a href="intro2.html#brown-amy">Amy Brown</a> and <a href="intro2.html#wilson-greg">Greg Wilson</a></td>
          </tr>
          <tr>
            <td align="right">1.</td>
            <td><a href="distsys.html">Scalable Web Architecture and Distributed Systems</a></td>
            <td><a href="intro2.html#matsudaira-kate">Kate Matsudaira</a></td>
          </tr>
          <tr>
            <td align="right">2.</td>
            <td><a href="ffreleng.html">Firefox Release Engineering</a></td>
            <td>
	      <a href="intro2.html#atlee-chris">Chris AtLee</a>,
	      <a href="intro2.html#blakk-lukas">Lukas Blakk</a>,
	      <a href="intro2.html#oduinn-john">John O'Duinn</a>, and
	      <a href="intro2.html#zambrano-gasparnian-armen">Armen Zambrano Gasparnian</a>
            </td>
          </tr>
          <tr>
            <td align="right">3.</td>
            <td><a href="freertos.html">FreeRTOS</a></td>
            <td><a href="intro2.html#svec-christopher">Christopher Svec</a></td>
          </tr>
          <tr>
            <td align="right">4.</td>
            <td><a href="gdb.html">GDB</a></td>
            <td><a href="intro2.html#shebs-stan">Stan Shebs</a></td>
          </tr>
          <tr>
            <td align="right">5.</td>
            <td><a href="ghc.html">The Glasgow Haskell Compiler</a></td>
            <td>
	      <a href="intro2.html#marlow-simon">Simon Marlow</a> and
	      <a href="intro2.html#peyton-jones-simon">Simon Peyton-Jones</a>
            </td>
          </tr>
          <tr>
            <td align="right">6.</td>
            <td><a href="git.html">Git</a></td>
            <td><a href="intro2.html#potter-susan">Susan Potter</a></td>
          </tr>
          <tr>
            <td align="right">7.</td>
            <td><a href="gpsd.html">GPSD</a></td>
            <td><a href="intro2.html#raymond-eric">Eric Raymond</a></td>
          </tr>
          <tr>
            <td align="right">8.</td>
            <td><a href="ironlang.html">The Dynamic Language Runtime and the Iron Languages</a></td>
            <td><a href="intro2.html#hardy-jeff">Jeff Hardy</a></td>
          </tr>
          <tr>
            <td align="right">9.</td>
            <td><a href="itk.html">ITK</a></td>
            <td>
	      <a href="intro2.html#ibanez-luis">Luis Ibanez</a> and 
	      <a href="intro2.html#king-brad">Brad King</a>
            </td>
          </tr>
          <tr>
            <td align="right">10.</td>
            <td><a href="mailman.html">GNU Mailman</a></td>
            <td><a href="intro2.html#warsaw-barry">Barry Warsaw</a></td>
          </tr>
          <tr>
            <td align="right">11.</td>
            <td><a href="matplotlib.html">matplotlib</a></td>
            <td>
	      <a href="intro2.html#hunter-john">John Hunter</a> and
	      <a href="index.html#droettboom-michael">Michael Droettboom</a>
            </td>
          </tr>
          <tr>
            <td align="right">12.</td>
            <td><a href="mediawiki.html">MediaWiki</a></td>
            <td>
	      <a href="intro2.html#harihareswara-sumana">Sumana Harihareswara</a> and
	      <a href="intro2.html#paumier-guillaume">Guillaume Paumier</a>
            </td>
          </tr>
          <tr>
            <td align="right">13.</td>
            <td><a href="moodle.html">Moodle</a></td>
            <td><a href="intro2.html#hunt-tim">Tim Hunt</a></td>
          </tr>
          <tr>
            <td align="right">14.</td>
            <td><a href="nginx.html">nginx</a></td>
            <td><a href="intro2.html#alexeev-andrey">Andrey Alexeev</a></td>
          </tr>
          <tr>
            <td align="right">15.</td>
            <td><a href="openmpi.html">Open MPI</a></td>
            <td><a href="intro2.html#squyres-jeff">Jeff Squyres</a></td>
          </tr>
          <tr>
            <td align="right">16.</td>
            <td><a href="oscar.html">OSCAR</a></td>
            <td><a href="intro2.html#ruttan-jennifer">Jennifer Ruttan</a></td>
          </tr>
          <tr>
            <td align="right">17.</td>
            <td><a href="pjs.html">Processing.js</a></td>
            <td><a href="intro2.html#kamermans-mike">Mike Kamermans</a></td>
          </tr>
          <tr>
            <td align="right">18.</td>
            <td><a href="puppet.html">Puppet</a></td>
            <td>
	      <a href="intro2.html#kanies-luke">Luke Kanies</a>
            </td>
          </tr>
          <tr>
            <td align="right">19.</td>
            <td><a href="pypy.html">PyPy</a></td>
            <td><a href="intro2.html#peterson-benjamin">Benjamin Peterson</a></td>
          </tr>
          <tr>
            <td align="right">20.</td>
            <td><a href="sqlalchemy.html">SQLAlchemy</a></td>
            <td><a href="intro2.html#bayer-michael">Michael Bayer</a></td>
          </tr>
          <tr>
            <td align="right">21.</td>
            <td><a href="twisted.html">Twisted</a></td>
            <td><a href="intro2.html#mckellar-jessica">Jessica McKellar</a></td>
          </tr>
          <tr>
            <td align="right">22.</td>
            <td><a href="yesod.html">Yesod</a></td>
            <td><a href="intro2.html#snoyman-michael">Michael Snoyman</a></td>
          </tr>
          <tr>
            <td align="right">23.</td>
            <td><a href="yocto.html">Yocto</a></td>
            <td><a href="intro2.html#flanagan-elizabeth">Elizabeth Flanagan</a></td>
          </tr>
          <tr>
            <td align="right">24.</td>
            <td><a href="zeromq.html">ZeroMQ</a></td>
            <td><a href="intro2.html#sustrik-martin">Martin S&uacute;strik</a></td>
          </tr>
          <tr>
            <td></td>
            <td><a href="bib2.html">Bibliography</a></td>
            <td></td>
          </tr>
        </table>
      </div>
    </div>

    <div class="row">
      <div class="col-12 center">
	<h2 id="aosa1">AOSA Volume 1</h2>
      </div>
    </div>
    <div class="row">
      <div class="col-4 center">
        <img class="cover" src="../images/cover1.jpg" alt="Volume 1 cover"/> 
        <p><a href="buy.html#vol1">Buy Volume I</a></p>
      </div>
      <div class="col-8">
        <table>
          <tr>
            <td align="right"></td>
            <td><a href="intro1.html">Introduction</a></td>
            <td><a href="intro1.html#brown-amy">Amy Brown</a> and <a href="intro1.html#wilson-greg">Greg Wilson</a></td>
          </tr>
          <tr>
            <td align="right">1.</td>
            <td><a href="asterisk.html">Asterisk</a></td>
            <td><a href="intro1.html#bryant-russell">Russell Bryant</a></td>
          </tr>
          <tr>
            <td align="right">2.</td>
            <td><a href="audacity.html">Audacity</a></td>
            <td><a href="intro1.html#crook-james">James Crook</a></td>
          </tr>
          <tr>
            <td align="right">3.</td>
            <td><a href="bash.html">The Bourne-Again Shell</a></td>
            <td><a href="intro1.html#ramey-chet">Chet Ramey</a></td>
          </tr>
          <tr>
            <td align="right">4.</td>
            <td><a href="bdb.html">Berkeley DB</a></td>
            <td><a href="intro1.html#seltzer-margo">Margo Seltzer</a> and <a href="intro1.html#bostic-keith">Keith Bostic</a></td>
          </tr>
          <tr>
            <td align="right">5.</td>
            <td><a href="cmake.html">CMake</a></td>
            <td><a href="intro1.html#hoffman-bill">Bill Hoffman</a> and <a href="intro1.html#martin-kenneth">Kenneth Martin</a></td>
          </tr>
          <tr>
            <td align="right">6.</td>
            <td><a href="eclipse.html">Eclipse</a></td>
            <td><a href="intro1.html#moir-kim">Kim Moir</a></td>
          </tr>
          <tr>
            <td align="right">7.</td>
            <td><a href="graphite.html">Graphite</a></td>
            <td><a href="intro1.html#davis-chris">Chris Davis</a></td>
          </tr>
          <tr>
            <td align="right">8.</td>
            <td><a href="hdfs.html">The Hadoop Distributed File System</a></td>
            <td><a href="intro1.html#chansler-robert">Robert Chansler</a>, <a href="intro1.html#kuang-hairong">Hairong Kuang</a>, <a href="intro1.html#radia-sanjay">Sanjay Radia</a>, <a href="intro1.html#shvachko-konstantin">Konstantin Shvachko</a>, and <a href="intro1.html#srinivas-suresh">Suresh Srinivas</a></td>
          </tr>
          <tr>
            <td align="right">9.</td>
            <td><a href="integration.html">Continuous Integration</a></td>
            <td><a href="intro1.html#brown-titus">C. Titus Brown</a> and <a href="intro1.html#canino-koning-rosangela">Rosangela Canino-Koning</a></td>
          </tr>
          <tr>
            <td align="right">10.</td>
            <td><a href="jitsi.html">Jitsi</a></td>
            <td><a href="intro1.html#ivov-emil">Emil Ivov</a></td>
          </tr>
          <tr>
            <td align="right">11.</td>
            <td><a href="llvm.html">LLVM</a></td>
            <td><a href="intro1.html#lattner-chris">Chris Lattner</a></td>
          </tr>
          <tr>
            <td align="right">12.</td>
            <td><a href="mercurial.html">Mercurial</a></td>
            <td><a href="intro1.html#ochtman-dirkjan">Dirkjan Ochtman</a></td>
          </tr>
          <tr>
            <td align="right">13.</td>
            <td><a href="nosql.html">The NoSQL Ecosystem</a></td>
            <td><a href="intro1.html#marcus-adam">Adam Marcus</a></td>
          </tr>
          <tr>
            <td align="right">14.</td>
            <td><a href="packaging.html">Python Packaging</a></td>
            <td><a href="intro1.html#ziade-tarek">Tarek Ziad&eacute;</a></td>
          </tr>
          <tr>
            <td align="right">15.</td>
            <td><a href="riak.html">Riak and Erlang/OTP</a></td>
            <td><a href="intro1.html#cesarini-francesco">Francesco Cesarini</a>, <a href="intro1.html#gross-andy">Andy Gross</a>, and <a href="intro1.html#sheehy-justin">Justin Sheehy</a></td>
          </tr>
          <tr>
            <td align="right">16.</td>
            <td><a href="selenium.html">Selenium WebDriver</a></td>
            <td><a href="intro1.html#stewart-simon">Simon Stewart</a></td>
          </tr>
          <tr>
            <td align="right">17.</td>
            <td><a href="sendmail.html">Sendmail</a></td>
            <td><a href="intro1.html#allman-eric">Eric Allman</a></td>
          </tr>
          <tr>
            <td align="right">18.</td>
            <td><a href="snowflock.html">SnowFlock</a></td>
            <td><a href="intro1.html#bryant-roy">Roy Bryant</a> and <a href="intro1.html#lagar-cavilla-andres">Andr&eacute;s Lagar-Cavilla</a></td>
          </tr>
          <tr>
            <td align="right">19.</td>
            <td><a href="socialcalc.html">SocialCalc</a></td>
            <td><a href="intro1.html#tang-audrey">Audrey Tang</a></td>
          </tr>
          <tr>
            <td align="right">20.</td>
            <td><a href="telepathy.html">Telepathy</a></td>
            <td><a href="intro1.html#madeley-danielle">Danielle Madeley</a></td>
          </tr>
          <tr>
            <td align="right">21.</td>
            <td><a href="thousandparsec.html">Thousand Parsec</a></td>
            <td><a href="intro1.html#laudicina-alan">Alan Laudicina</a> and <a href="intro1.html#mavrinac-aaron">Aaron Mavrinac</a></td>
          </tr>
          <tr>
            <td align="right">22.</td>
            <td><a href="violet.html">Violet</a></td>
            <td><a href="intro1.html#horstmann-cay">Cay Horstmann</a></td>
          </tr>
          <tr>
            <td align="right">23.</td>
            <td><a href="vistrails.html">VisTrails</a></td>
            <td><a href="intro1.html#freire-juliana">Juliana Freire</a>, <a href="intro1.html#koop-david">David Koop</a>, <a href="intro1.html#santos-emanuele">Emanuele Santos</a>, <a href="intro1.html#scheidegger-carlos">Carlos Scheidegger</a>, <a href="intro1.html#silva-claudio">Claudio Silva</a>, and <a href="intro1.html#vo-huy">Huy T. Vo</a></td>
          </tr>
          <tr>
            <td align="right">24.</td>
            <td><a href="vtk.html">VTK</a></td>
            <td><a href="intro1.html#geveci-berk">Berk Geveci</a> and <a href="intro1.html#schroeder-will">Will Schroeder</a></td>
          </tr>
          <tr>
            <td align="right">25.</td>
            <td><a href="wesnoth.html">Battle For Wesnoth</a></td>
            <td><a href="intro1.html#shimooka-richard">Richard Shimooka</a> and <a href="intro1.html#white-david">David White</a></td>
          </tr>
          <tr>
            <td></td>
            <td><a href="bib1.html">Bibliography</a></td>
            <td></td>
          </tr>
        </table>
      </div>
    </div>
    
    <h2>License and Royalties</h2>
    <p>
      This work is made available under
      the <a href="http://creativecommons.org/licenses/by/3.0/legalcode">Creative Commons Attribution 3.0 Unported</a> license.
      Please see
      the <a href="license.html">full description of the license</a> for details.
      All <a href="#purchase">royalties</a> from sales of these books will be donated to
      <a href="http://amnesty.org">Amnesty International</a>.
    </p>
    
    <h2>Contributing</h2>
    <p>
      Dozens of volunteers worked hard to create this book,
      but there is still lots to do.
      You can help by reporting errors,
      by helping to translate the content into other languages and formats,
      or by describing the architecture of other open source projects.
      Please contact us the coordinators for various translations listed below,
      or mail us directly at <a href="mailto:gvwilson@third-bit.com">gvwilson@third-bit.com</a>
      if you would like to start a new translation or write a chapter yourself.
    </p>
  </body>
</html>
